在正在到来的物联网时代,路由器是一个家庭里面的核心,连接着各种智能设备,路由器会被更多的黑客盯上,用于发动DDos,传播木马、病毒、挖矿软件等。本文以D-Link路由器的一个远程命令执行漏洞为例带你入门路由器漏洞分析。
本文首发在绿盟科技博客:http://blog.nsfocus.net/router-vulnerability/
环境
- attifyOS:智能设备固件分析环境(下载:https://github.com/adi0x90/attifyos )
- 固件二进制文件DIR-645_FIRMWARE_1.03.ZIP (下载:ftp://ftp2.dlink.com/PRODUCTS/DIR-645/REVA/DIR-645_FIRMWARE_1.03.ZIP )
环境启动
运行
fat.py
输入你下载的zip的路径,在输入下brand就可以了
最后再就是输入user firmadyne的密码,密码也是firmadyne
如果不是root用户运行还会输入用户密码
最后即可启动成功
访问192.168.0.1即可
漏洞分析
先解压,再解开固件(M是递归扫描的意思,e是extract,提取的意思)
1 | unzip DIR-645_FIRMWARE_1.03.ZIP |
那就可以得到固件的根目录
1 | /home/oit/firmware/_dir645_FW_103.bin.extracted/squashfs-root [oit@ubuntu] [1:22] |
只有htdocs里面和web相关的二进制程序,实际的bin程序基本都是调用busybox
跟进htdocs看看两个bin文件都是mips 32的elf文件,fileaccess.cgi是权限控制相关的
1 | /home/oit/firmware/_dir645_FW_103.bin.extracted/squashfs-root/htdocs [oit@ubuntu] [2:06] |
漏洞在cgibin文件里面,IDA打开,main函数判断假如访问的是service.cgi就调用servicecgi_main
servicecgi_main里面先判断请求的方法,只处理get和post(其实后面都是走一样的路径,所以这个get和post利用都可以),之后是调用cgibin_parse_request,解析CONTENT_TYPE,CONTENT_LENGTH
之后便是解析参数,其中EVENT跟SERVICE都是会调用lxmldbc_system
而lxmldbc_system会调用system执行command,而且是没有任何过滤的,那就存在命令注入的风险了
那么我们得到一种命令执行的挖掘方法就是:通过system反向解引用就可以了
漏洞利用
访问一下http://192.168.0.1/service.cgi
(具体ip根据实际修改),是可以访问的
最后即可利用
如果是利用SERVICE字段就得加个ACTION参数
reference
https://cr0n1c.wordpress.com/2018/01/08/exploiting-cheap-labor/